import { getTaskGroup } from '../modules/timeconfig.js';  // 引入获取任务组的函数

export class TaskListPlugin extends plugin {
  constructor() {
    super({
      name: "皮皮的任务列表",  // 插件名称
      dsc: "查看当前任务列表",  // 插件描述
      event: "message",
      priority: 5,
      rule: [
        {
          reg: "^#皮皮的任务列表$",  // 查询任务列表的命令
          fnc: "showTaskList",
          permission: "master",
        },
      ],
    });
  }

  /**
   * 查询当前任务列表
   */
  async showTaskList(e) {
    const tasks = getTaskGroup("皮皮的定时器");  // 获取任务组中的任务

    if (tasks.length === 0) {
      e.reply("[皮皮的任务列表] 当前没有正在运行的任务。");
    } else {
      let taskListMessage = "[皮皮的任务列表] 当前任务：\n";
      tasks.forEach((task, index) => {
        // CronJob 不提供 _repeat 属性，我们需要从任务的 Cron 表达式中解析间隔
        const cronPattern = task.cronJob.cronTime.source;  // 获取 Cron 表达式
        let intervalType = '';
        let timeValue = null;

        // 如果 Cron 表达式是 "*/X * * * *" 形式，表示每 X 分钟执行一次
        if (cronPattern.startsWith('*/')) {
          const minutes = parseInt(cronPattern.split(' ')[0].substring(2));  // 获取 Cron 表达式中的分钟间隔
          intervalType = '分钟';
          timeValue = minutes;
        }
        // 如果 Cron 表达式是 "0 */X * * *" 形式，表示每 X 小时执行一次
        else if (cronPattern.startsWith('0 */')) {
          const hours = parseInt(cronPattern.split(' ')[1].substring(2));  // 获取 Cron 表达式中的小时间隔
          intervalType = '小时';
          timeValue = hours;
        }

        if (intervalType && timeValue !== null) {
          taskListMessage += `${index + 1}. ${task.name} (间隔: 每 ${timeValue} ${intervalType})\n`;
        } else {
          taskListMessage += `${index + 1}. ${task.name} (Cron 表达式: ${cronPattern})\n`;
        }
      });
      e.reply(taskListMessage);
    }
  }
}
